<?php

/**
  This program is free software; you can redistribute it and/or modify
  it under the terms of the GNU General Public License as published by
  the Free Software Foundation; version 3 of the License.

  This program is distributed in the hope that it will be useful,
  but WITHOUT ANY WARRANTY; without even the implied warranty of
  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  GNU General Public License for more details.
 */
/**
 * Shopping cart item inteface class
 * @package Util
 * @author Vincze Tamás
 * @version 0.2
 */

namespace Util\Cart;

interface ICartItem {

	/**
	 * Gets the name of the item
	 * @access public
	 * @return string
	 */
	public function getName();
	
	/**
	 * Gets the unique identifier of the item
	 * @access public
     * @var bool $idOnly get the value only of the $_id var if true otherwise the called class name too (It's tottalí unique then)
	 * @return string
	 */
	public function getID($idOnly);
	
	/**
	 * Gets the net price of the item
	 * @access public
	 * @return float
	 */
	public function getNetPrice();

	/**
	 * Gets the vat of the item
	 * @access public
	 * @return float
	 */
	public function getVat();
	
	/**
	 * Gets the vat price of the item
	 * @access public
	 * @return float
	 */
	public function getVatPrice();
	
	/**
	 * Gets the gross price of the item
	 * @access public
	 * @return float
	 */
	public function getGrossPrice();
	
	/**
	 * Gets quantity of the item
	 * @access public
	 * @return string
	 */
	public function getQty();
	
	/**
	 * Gets the sum net price of the item (netPrice * qty)
	 * @access public
	 * @return float
	 */
	public function getNetSum();
	
	/**
	 * Gets the sum gross price of the item (grossPrice * qty)
	 * @access public
	 * @return float
	 */
	public function getGrossSum();
		
	/**
	 * Gets misc informations of the item
	 * @access public
	 * @return string
	 */
	public function getMisc();
	
	/**
	 * Gets if the quantity is modifiable or not (variable has to be hard coded)
	 * @access public
	 * @return bool
	 */
	public function isQtyModifiable();
	
	/**
	 * Updates the name of the item
	 * @access public
	 * @var string name of the cart item
	 * @return self
	 */
	public function setName($string);
	
	/**
	 * Updates the price of the item
	 * @access public
	 * @var float price of the cart item
	 * @return self
	 */
	public function setNetPrice($float);
	
	/**
	 * Updates the vat of the item
	 * @access public
	 * @var float vat of the cart item
	 * @return self
	 */
	public function setVat($float);
	
	/**
	 * Updates the qty of the item
	 * @access public
	 * @var int quanity of the cart item
	 * @return self
	 */
	public function setQty($int);
	
	
	/**
	 * Updates misc informations of the item
	 * @access public
	 * @var mixed misc data of the cart item
	 * @return string
	 */
	public function setMisc($mixed);

}

?>
